/*
 * ImagenAnimada.cpp
 *
 *  Created on: 08/12/2009
 *      Author: ale
 */

#include "ImagenAnimada.h"
#include <GL/glut.h>

ImagenAnimada::ImagenAnimada(const Quad& q,Textura* t):forma(q){
	textura = t;
	pausa=true;
	paso = 0;
}

void ImagenAnimada::setCamino(Curva* camino){
	this->camino = camino;
	this->final = camino->getPunto(camino->getCantidadPuntos()-1);
}

void ImagenAnimada::pausar(){
	pausa = true;
}
void ImagenAnimada::reproducir(){
	pausa=false;
}
void ImagenAnimada::rebobinar(){
	paso=0;
}

void ImagenAnimada::display(){
if(camino !=NULL){
	float anguloX = camino->getTangente(paso).anguloCon(forma.getNormal());
	float anguloZ = final.anguloCon(forma.getTangente());
	float frac = (float)paso/camino->getCantidadPuntos();
	glEnable(GL_TEXTURE_2D);
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
	if(textura != NULL){
		textura->bind();
	}
	glPushMatrix();
	glRotatef(anguloX*frac,1,0,0);
	glRotatef(anguloZ*frac,0,0,1);
	glTranslatef((*camino)[paso].x(),(*camino)[paso].y(),(*camino)[paso].z());
	forma.display();
	glPopMatrix();
	glDisable(GL_TEXTURE_2D);
	if(!pausa && paso < camino->getCantidadPuntos()){
		paso++;
	}
}
}

ImagenAnimada::~ImagenAnimada(){

}
